﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.ApplicationModel;

namespace Anagramme.Contracts
{
    /// <summary>
    /// Définition des informations sur un mot
    /// </summary>
    [DataContract]
    public class WordInfo : ObservableObject
    {
        #region Constructors
        /// <summary>
        /// Crée une nouvelle instance de la classe <see cref="WordInfo"/>
        /// </summary>
        public WordInfo()
        {
            this.Value = string.Empty;
            this.IsFound = false;
        }

        /// <summary>
        /// Crée une nouvelle instance de la classe <see cref="WordInfo"/>
        /// </summary>
        /// <param name="word">Valeur du mot</param>
        public WordInfo(string word)
        {
            this.Value = word;
            this.IsFound = false;
        }
        #endregion

        #region Fields
        private bool _isFound;
        private string _value;
        #endregion

        #region Properties
        /// <summary>
        /// Obient ou définit une valeur indiquant si le mot à été découvert par l'équipe adverse
        /// </summary>
        [DataMember]
        public bool IsFound
        {
            get { return this._isFound; }
            set
            {
                if (!this._isFound.Equals(value))
                {
                    base.RaisePropertyChanging();
                    this._isFound = value;
                    base.RaisePropertyChanged();
                }
            }
        }

        /// <summary>
        /// Obtient ou définit la valeur du mot
        /// </summary>
        [DataMember]
        public string Value
        {
            get { return this._value; }
            set
            {
                if (!object.ReferenceEquals(this._value, value))
                {
                    base.RaisePropertyChanging();
                    this._value = value;
                    base.RaisePropertyChanged();
                }
            }
        }
        #endregion
    }
}
